package dominio;

import java.util.ArrayList;
import java.util.List;

public class Carrinho {
	
	private List<ItemCarrinho> itens = new ArrayList<ItemCarrinho>();

	public List<ItemCarrinho> getItens() {
		return itens;
	}

	public void setItens(List<ItemCarrinho> itens) {
		this.itens = itens;
	}
	
	/**
	 * Busca o item no carrinho, caso este não exista, o cria e retona ao método que o chamou
	 * @param produto
	 * Produto passado por parâmetro
	 * @return
	 */
	
	public ItemCarrinho buscaItem(Produto produto) {
		
		if (itens != null) {
			for (ItemCarrinho itemCarrinho: itens) {
				if (itemCarrinho.getProduto().equals(produto)) {
					return itemCarrinho;
				}
			}
		}
		ItemCarrinho aux = new ItemCarrinho();
		aux.setProduto(produto);
		itens.add(aux);
		return aux;
	}
	
	/**
	 * Adiciona o produto e a quantidade passadas por parâmetro ao carrinho, caso este produto não exista o insere no carrinho
	 * @param produto
	 * O produto a ser adicionado
	 * @param quantidade
	 * A quantidade a ser adicionada
	 * @return
	 */
	
	public Integer adicionar(Produto produto, Integer quantidade) {
		
		Integer qteIncrementada = 0;
		
		ItemCarrinho aux = buscaItem(produto);
		if (produto.getQteEstoque() > quantidade) {
			aux.incrementarQuantidade(quantidade);
			qteIncrementada = quantidade;
		}
		else {
			aux.incrementarQuantidade(produto.getQteEstoque());
			qteIncrementada = produto.getQteEstoque();
		}
		return qteIncrementada;
		
	}
	
	/**
	 * Remove o produto do carrinho
	 * @param produto
	 * O produto a ser removido
	 */
	
	public void remover(Produto produto) {
		
		itens.remove(itens.indexOf(buscaItem(produto)));
	}
	
	/**
	 * Remove todos os itens do carrinho
	 */
	
	public void limparCarrinho() {
		
		itens.removeAll(itens);
	}
	
	/**
	 * Calcula o valor total do carrinho de compras
	 * @return
	 * Um double com o valor total do carrinho
	 */
	
	public double valorTotal() {
		
		double total = 0;
		for (ItemCarrinho itemCarrinho: itens) {
			total += itemCarrinho.valorTotal();
		}
		return total;
	}

}
